import os
import sys
import logging
import traceback

# 添加src目录到Python路径
sys.path.append(os.path.join(os.path.dirname(__file__), 'src'))

# 导入DuplicateDetector
from duplicate_detector.duplicate_detector import DuplicateDetector

# 详细测试日志配置
if __name__ == '__main__':
    print("===== 详细日志配置测试 =====")
    try:
        # 打印当前工作目录
        print(f"当前工作目录: {os.getcwd()}")
        
        # 检查日志目录是否存在
        log_dir = os.path.join(os.path.dirname(__file__), 'logs')
        print(f"日志目录路径: {log_dir}")
        if not os.path.exists(log_dir):
            print("日志目录不存在，尝试创建...")
            try:
                os.makedirs(log_dir, exist_ok=True)
                print("日志目录创建成功")
            except Exception as e:
                print(f"日志目录创建失败: {e}")
        else:
            print("日志目录已存在")
        
        # 检查日志文件是否存在
        log_file = os.path.join(log_dir, 'duplicate_detector.log')
        print(f"日志文件路径: {log_file}")
        if os.path.exists(log_file):
            print(f"日志文件已存在，大小: {os.path.getsize(log_file)} 字节")
        else:
            print("日志文件不存在")
        
        # 创建DuplicateDetector实例
        print("尝试创建DuplicateDetector实例...")
        detector = DuplicateDetector()
        print("成功创建DuplicateDetector实例")
        
        # 手动记录一条日志
        logging.info("测试日志记录")
        print("已手动记录一条日志")
        
        # 再次检查日志文件
        if os.path.exists(log_file):
            print(f"日志文件已创建，大小: {os.path.getsize(log_file)} 字节")
            # 尝试读取日志文件
            try:
                with open(log_file, 'r', encoding='utf-8') as f:
                    print("日志内容预览 (UTF-8):")
                    content = f.read()
                    print(content[:500] + '...' if len(content) > 500 else content)
            except UnicodeDecodeError:
                try:
                    with open(log_file, 'r', encoding='gbk') as f:
                        print("日志内容预览 (GBK):")
                        content = f.read()
                        print(content[:500] + '...' if len(content) > 500 else content)
                except Exception as e:
                    print(f"读取日志文件失败: {e}")
        else:
            print("日志文件仍未创建")
            # 检查可能的错误原因
            print("检查可能的错误原因...")
            # 打印Python路径
            print(f"Python路径: {sys.path}")
            # 打印日志配置
            print("日志配置:")
            for handler in logging.root.handlers:
                print(f"  处理器: {handler}")
                if isinstance(handler, logging.FileHandler):
                    print(f"  文件路径: {handler.baseFilename}")
                    print(f"  编码: {handler.encoding}")
    except Exception as e:
        print(f"测试失败: {e}")
        print(f"错误跟踪:\n{traceback.format_exc()}")
    print("===== 测试结束 =====")